package pedido;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Vector;

import exception.PedidoExistenteException;
import exception.PedidoInexistenteException;

public class RepositorioPedidoMap implements IRepositorioPedido {
	
	private Map<Integer,Pedido> pedidoMap = 
		  new HashMap<Integer, Pedido>();

	@Override
	public void atualizarPedido( Pedido pedido ) throws PedidoInexistenteException {
		if ( existe ( pedido.getId() ) ) {
			pedidoMap.put(pedido.getId(), pedido);
		} else {
			throw new PedidoInexistenteException( pedido.getId() );
		}
	}

	@Override
	public boolean existe( Integer id ) {
		return pedidoMap.containsKey( id );
	}

	@Override
	public void inserir(Pedido novoPedido) throws PedidoExistenteException {
		if (!existe(novoPedido.getId())) {
			pedidoMap.put(novoPedido.getId(), novoPedido);
		} else {
			throw new PedidoExistenteException( novoPedido.getId() );
		}		
	}

	@Override
	public Pedido procurar( Integer id ) throws PedidoInexistenteException {
		Pedido ret = pedidoMap.get( id );
		if (ret == null) {
			throw new PedidoInexistenteException( id );
		}
		return ret;
	}

	@Override
	public void removerPedido( Integer id ) throws PedidoInexistenteException {
		if ( existe( id ) ) {
			pedidoMap.remove( id );
		} else {
			throw new PedidoInexistenteException( id );
		}
	}
	
	@Override
	public Vector<Pedido> listar()  {
		return null;
	}

	public Iterator<Pedido> todosDados(){
		return pedidoMap.values().iterator();
	}
	
}

